package com.itheima.datastructure.deque;

/**
 * 双端队列接口
 *
 * @param <E> 队列中元素类型
 */
public interface Deque<E> {

    /**
     * 添加元素
     *
     * @param e 添加的元素
     * @return 添加成功返回true，队列已满返回false
     */
    boolean offerFirst(E e);

    /**
     * 添加元素
     *
     * @param e 添加的元素
     * @return 添加成功返回true，队列已满返回false
     */
    boolean offerLast(E e);

    /**
     * 获取并移除队列头部元素
     *
     * @return
     */
    E pollFirst();

    /**
     * 获取并移除队列尾部元素
     *
     * @return
     */
    E pollLast();

    /**
     * 获取队列头部元素，不移除
     *
     * @return
     */

    E peekFirst();

    /**
     * 获取队列尾部元素，不移除
     *
     * @return
     */
    E peekLast();

    /**
     * 判断队列是否为空
     *
     * @return
     */

    boolean isEmpty();

    /**
     * 判断队列是否已满
     *
     * @return
     */
    boolean isFull();
}
